/**
 * Created by mkDark on 2018/3/20.
 */
var express = require('express');
var router = express.Router();
var superagent = require('superagent');
var CONFIG = require('../../../common/config');
var CODE = require('../../../common/code');
var retUtil = require('./util/retUtil');
var activityUtil = require('./util/activityUtil');
var api4backUtil = require('./api4back/util/api4backUtil');
var activityService = require('../../service/activityService');

router.get('/',function (req, res, next) {
    res.send('respond with a activity resource');
});


/**
 * 获取问卷调查数据模板
 *
 * @author  毛凯
 * @date 2018-3-20
 *
 * 参数名称	是否必须	示例	备注
 * id           是   1    问卷调查模板 id(页面写死)
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/1716
 * 测试地址：http://localhost:3000/yjx/v1/activity/getQaTmpl?id=1
 */
function getQaTmpl(req, res, next) {
    var id = retUtil.numberFromReq(req,"id");
    if(id <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }

    activityUtil.getQaTmpl(id, function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [getQaTmpl] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getQaTmpl', getQaTmpl);
router.post('/getQaTmpl', getQaTmpl);

/**
 * 提交问卷反馈调查
 * @author  毛凯
 * @date 2018-3-20
 *
 * 参数名称	是否必须	示例	备注
 * answer      是   "{id:1,mobile:1246879512.......}"    问卷调查模板 id(页面写死)
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/1724
 * 测试地址：http://localhost:3000/yjx/v1/activity/getQaTmpl?answer={id:2....}
 */
function commitQaAnswer(req, res, next) {
    var answer = retUtil.stringFromReq(req,"answer");
    if(!answer){
        return retUtil.ret_err_json("参数错误",res);
    }
    activityUtil.commitQaAnswer(answer, function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [commitQaAnswer] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/commitQaAnswer', commitQaAnswer);
router.post('/commitQaAnswer', commitQaAnswer);



/**
 * 个人参与活动_APP_1_7添加_M
 *
 * @author jackLiu
 * @date   2018-6-8
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * activityId   活动唯一标识，例如：1298
 * userId   用户唯一标识，例如：299188
 * url  用户参赛的第三方链接，例如：https://xxx.xxx.com/xxx.mp4
 * desc  用户对作品简要说明,
 * couponCode  非必须参数
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3396
 * 测试地址：只支持POST方式，可以使用下方的 http://localhost:3000/yjx/v1/activity/test_submitProduct_v1_7 接口来转发POST请求
 * */
function submitProduct_v1_7(req, res, next) {
    var device = retUtil.numberFromReq(req,'device');
    var activityId = retUtil.numberFromReq(req,'activityId');
    var userId = retUtil.numberFromReq(req,'userId');
    var desc = retUtil.stringFromReq(req,"desc")||'';
    var url = retUtil.stringFromReq(req,"url");
    var couponCode = retUtil.stringFromReq(req,"couponCode");

    if(!url || url.length==0 || url.indexOf('http')!=0){
        return retUtil.ret_err_json("链接错误",res);
    }
    //验证参数合法性
    if(userId<=0 || activityId<=0){
        return retUtil.ret_err_json('参数有误',res)
    }

    activityUtil.submitProduct_v1_7(device,activityId, userId, desc, url,couponCode, function (error) {
        if(error) {
            console.log('yjx/v1/activity.js [submitProduct_v1_7] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_func_json(1, CODE.YJX_ACTIVITY_SUCCESS_ADD_PRODUCT, {}, res);;
    });
}
router.post('/submitProduct_v1_7', submitProduct_v1_7);
router.get('/submitProduct_v1_7', submitProduct_v1_7);

/**
 * 后台上传作品用
 * @param activityId 活动id
 * @param userId 用户id
 * @param url 作品链接
 * @param desc
 * @param couponCode
 */
function submitProduct4Back_v1_7(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");   //设置跨域访问
    
    var device = retUtil.numberFromReq(req,'device');
    var activityId = retUtil.numberFromReq(req,'activityId');
    var userId = retUtil.numberFromReq(req,'userId');
    var desc = retUtil.stringFromReq(req,"desc")||'';
    var url = retUtil.stringFromReq(req,"url");
    var couponCode = retUtil.stringFromReq(req,"couponCode");

    if(!url || url.length==0 || url.indexOf('http')!=0){
        return retUtil.ret_err_json("链接错误",res);
    }
    //验证参数合法性
    if(userId<=0 || activityId<=0){
        return retUtil.ret_err_json('参数有误',res)
    }

    var param = {
        activityId: activityId,
        userId: userId,
        url: url,
        desc: desc,
        couponCode: couponCode
    };
    activityUtil.submitProduct4Back_v1_7(param, function (error) {
        if(error) {
            console.log('yjx/v1/activity.js [submitProduct4Back_v1_7] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_func_json(1, CODE.YJX_ACTIVITY_SUCCESS_ADD_PRODUCT, {}, res);;
    });
}
router.post('/submitProduct4Back_v1_7', submitProduct4Back_v1_7);
router.get('/submitProduct4Back_v1_7', submitProduct4Back_v1_7);


// 测试submitProduct_v1_7，
// 接口地址：http://localhost:3000/yjx/v1/activity/test_submitProduct_v1_7
function test_submitProduct_v1_7(req, res, next) {
    var url = retUtil.stringFromReq(req,"url")||'https://www.iesdouyin.com/share/video/6562080374866840845/?region=CN&mid=6518996876107189005&titleType=title&timestamp=1528378755&utm_campaign=client_share&app=aweme&utm_medium=ios&tt_from=copy&iid=34475595351&utm_source=copy';

    // 发送post请求
    var testURL =  'http://'+CONFIG.API_SERVER_IP_LOCAL+':'+CONFIG.API_SERVER_PORT+ '/yjx/v1/activity/submitProduct_v1_7';
    var param = {
        device: 600,
        activityId: 1,
        userId: 1,
        desc:'测试',
        url:url,
        couponCode:""
    };
    superagent.post(testURL)
        .set('Content-Type', 'application/json')
        .send(param)
        .end(function(err, res2){
            if(err) {
                return retUtil.ret_err_json(err, res);
            }

            if(res2 && res2.text) {
                console.log('submitProduct_v1_7 ret: '+res);
                var retJson = JSON.parse(res2.text);
                return retUtil.ret_succ_json(retJson, res);
            } else {
                return retUtil.ret_err_json('发送POST请求失败', res);
            }
        }
    );
}
router.get('/test_submitProduct_v1_7', test_submitProduct_v1_7);



/**
 * 获取活动列表_APP_1_7 添加
 * @author  毛凯
 * @date 2018-6-8
 *
 * 参数名称	     是否必须	    示例	       备注
 * 参数：device    是             610       6 字段为 一键秀 相关标记
 *                                         600 一键秀网页端
 *                                         610 一键秀 android 端
 *                                         620 一键秀 iOS 端
 *                                         630 一键秀 嵌入网页端
 *                                         640 一键秀微信端
 *                                         650 一键秀小程序端
 * 参数：states   是            [20,30,40]  活动状态数组10未开场、20已开场、30活动截止、40活动关闭、50活动取消 数组的json字符串
 * 参数：pageNum  是            0           页码
 * 参数：pageSize 是           10           页容量
 * 参数：userId   否           299188       用户id
 * 参数：filterUser 否          0          是否根据用户过滤活动列表, 0 不过滤, 1 过滤, 如使用该字段必须传递 userId
 * 参数：checkReward 否         0         是否检测用户在活动中的获奖状况, 0标识不如使用该字段必须传递 userId
 * 参数：withTotalPage 是       1           是否返回总页数, 0 不返回, 1 返回
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/1724
 * 测试地址：http://localhost:3000/yjx/v1/activity/getActivityList_v1_7
 */
function getActivityList_v1_7(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var states = retUtil.arrayFromReq(req,"states");
    var pageNum = retUtil.numberFromReq(req,"pageNum") || 0;
    var pageSize = retUtil.numberFromReq(req,"pageSize");
    var userId = retUtil.numberFromReq(req,"userId");
    var filterUser = retUtil.numberFromReq(req,"filterUser");
    var checkReward = retUtil.numberFromReq(req,"checkReward");
    var withTotalPage = retUtil.numberFromReq(req,"withTotalPage") || 0;
    var orgId = retUtil.numberFromReq(req,"orgId") || 0;
    if(!device || !states || !pageSize || device <= 0 || states.length <= 0 || pageSize <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    //存储基本的参数信息
    var param = {
        states : states,
        pageNum : pageNum,
        pageSize : pageSize,
        withTotalPage : withTotalPage,
        orgId : orgId,
        userId : userId || 0,
        filterUser : filterUser || 0,
        checkReward : checkReward || 0,
        flag : 1
    };
    activityUtil.getActivityList_v1_7(param,function (error, data) {
        if(error) {
            console.log('yjx/v1/activity.js [getActivityList_v1_7] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getActivityList_v1_7', getActivityList_v1_7);
router.post('/getActivityList_v1_7', getActivityList_v1_7);





//---------------------------------------------


/*
* 获取活动详情_APP_1_7 添加
*
* @author 王俊
* @date 2018-06-08
*
* 参数: device    6 字段为 一键秀 相关标记
*                600 一键秀网页端
*                610 一键秀 android 端
*                620 一键秀 iOS 端
*                630 一键秀 嵌入网页端
*                640 一键秀微信端
*                650 一键秀小程序端
*
* 参数: activityId 活动唯一标识
*
* */
function getActivityDetail_v1_7(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var activityId = retUtil.numberFromReq(req, 'activityId');
    var topLimit = retUtil.numberFromReq(req, 'topLimit') || 3;
    if(activityId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    var opt = {
        device : device,
        activityId : activityId,
        topLimit : topLimit
    };
    activityService.getActivityDetail(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }

//        //######## 活动参与人数过少, 暂时以作品数冒充参与人数 ###############
//        data.brief.totalUsers = Math.ceil(data.brief.totalProducts*0.9);
//        //######## 活动参与人数过少, 暂时以作品数冒充参与人数 ###############

        return retUtil.ret_succ_json(data, res);
    });
    // activityUtil.getActivityDetail_v1_7(opt, function (error, data) {
    //     if(error) {
    //         return retUtil.ret_err_json(error, res);
    //     }
    //
    //     //######## 活动参与人数过少, 暂时以作品数冒充参与人数 ###############
    //     data.brief.totalUsers = Math.ceil(data.brief.totalProducts*0.9);
    //     //######## 活动参与人数过少, 暂时以作品数冒充参与人数 ###############
    //
    //     return retUtil.ret_succ_json(data, res);
    // });

}
router.get('/getActivityDetail_v1_7', getActivityDetail_v1_7);
router.post('/getActivityDetail_v1_7', getActivityDetail_v1_7);


/**
 * 获取个人指定活动信息_APP_1_7 添加_ M
 *
 * @author 王俊
 * @date 2018-06-09
 *
 * 参数: device    6 字段为 一键秀 相关标记
 *                600 一键秀网页端
 *                610 一键秀 android 端
 *                620 一键秀 iOS 端
 *                630 一键秀 嵌入网页端
 *                640 一键秀微信端
 *                650 一键秀小程序端
 *
 * 参数: activityId 活动唯一标识
 * 参数: userId   用户 id
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3404
 */
function getUserActivityInfo_v1_7(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var activityId = retUtil.numberFromReq(req, 'activityId');
    var userId = retUtil.numberFromReq(req, 'userId');
    if(activityId <=0 || userId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    var opt = {
        device : device,
        activityId : activityId,
        userId : userId
    };
    activityUtil.getUserActivityInfo_v1_7(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserActivityInfo_v1_7', getUserActivityInfo_v1_7);
router.post('/getUserActivityInfo_v1_7', getUserActivityInfo_v1_7);

/*
* 对活动的作品的分数进行排名
*
* @author 王俊
* @date 2018-06-19
*
* 参数: activityId        活动 id
* 参数: pageNum           页码
* 参数: pageSize          页容量
* 参数: withTotalPage     是否获取总页数
*
* 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3620
*
* */
function getActivityRankProductsList_app_v2_0(req, res, next) {

    var activityId = retUtil.numberFromReq(req, 'activityId');
    var pageNum = retUtil.numberFromReq(req, 'pageNum') || 0;
    var pageSize = retUtil.numberFromReq(req, 'pageSize');
    var withTotalPage = retUtil.numberFromReq(req, 'withTotalPage');

    var opt = {
        activityId : activityId,
        pageNum : pageNum,
        pageSize : pageSize,
        withTotalPage : withTotalPage
    };
    api4backUtil.rankActProductScore(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getActivityRankProductsList_app_v2_0', getActivityRankProductsList_app_v2_0);
router.post('/getActivityRankProductsList_app_v2_0', getActivityRankProductsList_app_v2_0);


module.exports = router;